#pragma once
#include "../CQReflect/CQReflectPri.h"
#include <windows.h>

typedef CQ::CQVirtual* (CQModule)(const std::string&, const std::string&);
struct CQHelper
{
	static CQModule* CreateModule(const std::string& moduleName);
	static void DeleteModule(const std::string& moduleName);
	static CQ::CQVirtual* CreateInstance(const std::string& moduleName, const std::string& className, const std::string& paraStr = "");
	static void DeleteInstance(CQ::CQVirtual* obj);
	static std::unordered_map<std::string, CQModule*> m_maker;
};

std::vector<CQ::CQReflectStruct> parseConfig(const std::string& path);